package com.example.springsecurity.mapper;

import com.example.springsecurity.domain.AssignExperiment;
import com.example.springsecurity.domain.Notice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName NoticeMapper
 * @Description TODO
 * @Author lvyongwei
 * @Date 2020-09-28 15:08
 **/
@Mapper
public interface NoticeMapper {

    /**
     * 管理通知  管理发布人，查看自己发布的所有通知
     *
     * @param notice
     * @return
     */
    public List<Notice> getAllNotice(Notice notice);

    /**
     * 添加通知信息
     *
     * @param notice
     * @return
     */
    public boolean insertNotice(Notice notice);

    /**
     * 获取所有用户id
     *
     * @return
     */
    public List<Long> getAllUserIds();


    /**
     * 获取用户所有未读通知
     * @param userId
     * @return
     */
    public List<Notice> getNoticeNoRead(Long userId);

    /**
     * 用户查看发给自己的所有通知信息
     * @param userId
     * @return
     */
    public List<Notice> getAllNoticeToMyself(Long userId);


    /**
     * 根据通知id获取通知内容信息
     * @param noticeId
     * @return
     */
    public Notice getNoticeById(Long noticeId);


    /**
     * 根据通知id查看该通知布置给了那些人
     * @param noticeId
     * @return
     */
    public List<Long> getAllUserIdByNoticeId(Long noticeId);


    /**
     * 根据通知id删除通知
     * @param noticeIds
     * @return
     */
    public boolean deleteNotice(@Param("noticeIds") Long[] noticeIds);


    /**
     * 改变已查看状态
     * @param noticeId  通知id
     * @param userId    用户id
     * @return
     */
    public boolean lookNotice(@Param("noticeId")Long noticeId,@Param("userId") Long userId);


    /**
     * 根据教师/负责人id 以及对应的实验项目id 获取到对应的布置信息
     * @param projectId
     * @param userId
     * @return
     */
    public List<AssignExperiment> getAssignExperiment(@Param("projectId") Integer projectId,@Param("userId") Long userId);


    /**
     * 根据布置的id获取教师布置给了那些学生  学号
     * @param assignId
     * @return
     */
    public List<String> getUserNameByAssignId(Long assignId);
}